import sys
from PyQt5.QtWidgets import *
 
 
class QMessageBoxDemo(QWidget):
    def __init__(self):
        super(QMessageBoxDemo,self).__init__()
        self.initUI()
 
    def initUI(self):
        #窗口设置
        self.setWindowTitle('QMessageBoxDemo')
        self.resize(400,300)
 
        #控件
        self.btn1=QPushButton()
        self.btn1.setText('显示关于对话框')
        self.btn2=QPushButton()
        self.btn2.setText('显示消息对话框')
        self.btn3 = QPushButton()
        self.btn3.setText('显示警告对话框')
        self.btn4 = QPushButton()
        self.btn4.setText('显示错误对话框')
        self.btn5 = QPushButton()
        '''
        一般是提问用户，让用户做出选择
        比如关闭一个正在编辑的文件，如果没有保存，软件会提示你是否保存
        或者要覆盖一个文件的话，会提示是否要覆盖等
        '''
        self.btn5.setText('显示提问对话框')
 
        #信号与槽绑定
        self.btn1.clicked.connect(self.showDialog)
        self.btn2.clicked.connect(self.showDialog)
        self.btn3.clicked.connect(self.showDialog)
        self.btn4.clicked.connect(self.showDialog)
        self.btn5.clicked.connect(self.showDialog)
 
        #布局
        layout=QVBoxLayout()
        layout.addWidget(self.btn1)
        layout.addWidget(self.btn2)
        layout.addWidget(self.btn3)
        layout.addWidget(self.btn4)
        layout.addWidget(self.btn5)
        self.setLayout(layout)
 
    #槽函数
    def showDialog(self):
        text=self.sender().text()
        if text== '显示关于对话框':
            QMessageBox.about(self,'关于','这是一个关于对话框')
        elif text=='显示消息对话框':
            '''
            第二个参数是窗口名，第三个参数是窗口内容
            最后一个参数是默认的，什么也不做，按回车就执行默认选项
            '''
            reply=QMessageBox.information(self,'消息','这是一个消息对话框',QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
            print(reply==QMessageBox.Yes)
        elif text=='显示警告对话框':
            QMessageBox.warning(self,'警告','这是一个警告对话框',QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
        elif text == '显示错误对话框':
            QMessageBox.critical(self,'警告','这是一个错误对话框',QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
        elif text == '显示提问对话框':
            QMessageBox.question(self, '提问', '这是一个提问对话框', QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
 
 
if __name__=='__main__':
    app=QApplication(sys.argv)
    main=QMessageBoxDemo()
    main.show()
    sys.exit(app.exec_())
